package com.he.staticproxymodel.staticproxy;

import com.he.staticproxymodel.product.BeautifulGirl;
import com.he.staticproxymodel.subject.concretecomponent.RichMan;
import com.he.staticproxymodel.subject.GiveGift;

/**
 * 静态代理代理模式的subject接口，代理类接受一个Subject接口的对象，任何实现该接口的对象，
 * 都可以通过代理类进行代理，增加了通用性。但是也有缺点，
 * 每一个代理类都必须实现一遍委托类（也就是realsubject）的接口，
 * 如果接口增加方法，则代理类也必须跟着修改。
 */
public class Proxy implements GiveGift {

    private RichMan richMan;


    public Proxy(BeautifulGirl beautifulGirl) {
        richMan = new RichMan();
        richMan.changeGirl(beautifulGirl);
    }

    @Override
    public void giveGift() {
        richMan.giveGift.giveGift();
    }
}
